//package cn.bonoon.services.plugins;
//
//import java.util.Date;
//import java.util.List;
//import java.util.regex.Pattern;
//
//import javax.persistence.EntityManager;
//import javax.persistence.PersistenceContext;
//import javax.persistence.Query;
//import javax.persistence.TypedQuery;
//
//import org.springframework.stereotype.Service;
//import org.springframework.transaction.annotation.Transactional;
//
//import cn.bonoon.entities.plugins.TagEntity;
//import cn.bonoon.kernel.support.ProxyManager;
//import cn.bonoon.kernel.util.StringHelper;
//
//@Service
//@Transactional(readOnly = true)
//@Deprecated
//public class ProxyManagerImpl implements ProxyManager{
//
//	@PersistenceContext
//	private EntityManager entityManager;
//	
//	public Object get(Class<?> cls, Long id){
//		return entityManager.find(cls, id);
//	}
//
//	@Override
//	@Transactional
//	public void addTag(String tags, String oldTags) {
//		if(StringHelper.isNotEmpty(tags)){
//			Pattern pattern = Pattern.compile("\\t|\\n|\\r|\\s|　|,|，|、|。");
//			String[] ts = pattern.split(tags);
//			Date now = new Date();
//			if(StringHelper.isNotEmpty(oldTags)){
//				String[] ots=pattern.split(oldTags);
//				for(int i = 0; i < ts.length; i++){
//					String t = ts[i];
//					if(StringHelper.isNotEmpty(t)){
//						boolean nsame = true;
//						for(int j = 0; j < ots.length; j++){
//							if(t.equals(ots[j])){
//								nsame = false;
//								break;
//							}
//						}
//						if(nsame){
//							//更新标签库
//							__tag(t, now);
//						}
//					}
//				}
//			}else{
//				for(int i = 0; i < ts.length; i++){
//					String t = ts[i];
//					if(StringHelper.isNotEmpty(t))
//						__tag(t, now);
//				}
//			}
//		}
//	}
//	
//	private void __tag(String tag, Date now){
//		String ql = "select x from TagEntity x where x.tagName=?";
//		List<TagEntity> rl = entityManager.createQuery(ql, TagEntity.class).setParameter(1, tag).getResultList();
//		if(rl.isEmpty()){
//			TagEntity te = new TagEntity();
//			te.setCount(1);
//			te.setCreateAt(now);
//			te.setLastQuoteAt(now);
//			te.setTagName(tag);
//			entityManager.persist(te);
//		}else{
//			TagEntity te = rl.get(0);
//			te.setCount(te.getCount() + 1);
//			te.setLastQuoteAt(now);
//			entityManager.merge(te);
//		}
//	}
//	
//	public EntityManager getEntityManager() {
//		return entityManager;
//	}
//
//	@Override
//	public boolean checkUnique(String entity, String property, 
//			Long id, String val1, String uniqField, Object uniqVal) {
//		if(id == null) id = -1L;		
//		String exist = "select count(*) from " + entity + " x where x." + property + "=? and x.id<>?";
//		if(StringHelper.isNotEmpty(uniqField) && null != uniqVal){
//			exist += " and x." + uniqField + "=?";
//			return entityManager.createQuery(exist, Number.class)
//					.setParameter(1, val1)
//					.setParameter(2, id)
//					.setParameter(3, uniqVal)
//					.getSingleResult()
//					.intValue() > 0;
//		}
//		return entityManager.createQuery(exist, Number.class)
//				.setParameter(1, val1)
//				.setParameter(2, id)
//				.getSingleResult()
//				.intValue() > 0;
//	}
//
//	@Override
//	public <T> TypedQuery<T> createQuery(String qlString, Class<T> resultClass) {
//		return entityManager.createQuery(qlString, resultClass);
//	}
//
//	@Override
//	public Query createQuery(String ql) {
//		return entityManager.createQuery(ql);
//	}
//}
